// Copyright (c) Microsoft Corporation. 
// Licensed under the MIT license.

#pragma once

#include "UObject/NameTypes.h"
#include "Modules/ModuleManager.h"
#include "Delegates/IDelegateInstance.h"

class FExtender;
class FUICommandList;
struct FAssetData;

class FLODRecipeExtensions
{
public:
	static void OnModulesChanged(FName InModuleName, EModuleChangeReason InChangeReason);
	static void RemoveExtensions();

	static void AddContentBrowserExtensions();
	static void RemoveContentBrowserExtensions();

private:
	//Static mesh editor
	static void AddStaticMeshEditorToolbarExtensions();
	static void OnStaticMeshEditorOpened(TWeakPtr<class IStaticMeshEditor> InStaticMeshEditor);

	//Skeletal mesh editor
	static void AddSkeletalMeshEditorToolbarExtensions();
	static void RemoveSkeletalMeshEditorToolbarExtensions();
	static TSharedRef<FExtender> AddSkeletalMeshEditorToolbarExtender(const TSharedRef<FUICommandList> CommandList, TSharedRef<class ISkeletalMeshEditor> InSkeletalMeshEditor);

	//Content browser
	static TSharedRef<FExtender> AddContentBrowserContextMenuExtender(const TArray<FAssetData>& SelectedAssets);

private:
	static FDelegateHandle SkeletalMeshExtensionHandle;
	static FDelegateHandle ContentBrowserContextMenuExtensionHandle;
};
